package Demo1;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class ConfigTest extends GenericServlet {
/**
*   ServletConfig:
*       1.ServletConfig是servlet规范中的一员,ServletConfig是一个接口,是由
 *      2.org.apache.catalina.core.StandardWrapperFacade来实现这个接口的,所以是由tomcat来实现的ServletConfig接口
 *      3.每个Servlet类中都有一个ServletConfig对象,是一对一的关系.
 *      4.ServletConfig对象是由tomcat服务器创建的.
 *      5.一个servlet对象就有一个配置信息对象.因为不同的Servlet对象有不同的配置信息
 *      6.servlet对象中包装了什么信息?
 *      包装了:
 *      <servlet>
 *         <servlet-name>Config</servlet-name>
 *         <servlet-class>Demo1.ConfigTest</servlet-class>
 *     </servlet>
 *     web.xml文件中servlet标签的内容是被包装到了ServletConfig中.
 *      <servlet>
 *         <servlet-name>Config</servlet-name>
 *         <servlet-class>Demo1.ConfigTest</servlet-class>
 *         <!--这里是可以配置servlet对象初始化信息的.-->
 *         <init-param>
 * <!--            通过键值对的方式配置key和value的信息-->
 *             <param-name>key</param-name>
 *             <param-value>value</param-value>
 *         </init-param>
 *
 *         <init-param>
 *             <!--            通过键值对的方式配置key和value的信息-->
 *             <param-name>url</param-name>
 *             <param-value>com.mysql.cj.jdbc.Driver</param-value>
 *         </init-param>
 *
 *         <init-param>
 *             <!--            通过键值对的方式配置key和value的信息-->
 *             <param-name>user</param-name>
 *             <param-value>root</param-value>
 *         </init-param>
 *
 *         <init-param>
 *             <!--            通过键值对的方式配置key和value的信息-->
 *             <param-name>password</param-name>
 *             <param-value>1234567899</param-value>
 *         </init-param>
 *     </servlet>
 *     这里的init-param是初始化信息,会自动封装到servletconfig对象中
 *
 *     Enumeration<String> names = servletConfig.getInitParameterNames();
 *     这个方法是一个集合,可以获取初始化的所有的name,封装成一个集合
* */
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        System.out.println("Config service method execute!");
        ServletConfig servletConfig = this.getServletConfig();
        // 获取名字 获取的是web.xml文件中的servletname
        String servletName = servletConfig.getServletName();
        // 输出对象
        out.print("<h1>servletConfig<h1>"+servletConfig);
        Enumeration<String> names = servletConfig.getInitParameterNames();

        while(names.hasMoreElements()){
            String name = names.nextElement();
            // 通过初始化参数的name获取value
            String value = servletConfig.getInitParameter(name);
            out.print(name+ "  "+value);

        }

        out.print("<br>");
        out.print("Servlet Name"+servletName);
    }
}
